// npm install mongodb
const { MongoClient } = require('mongodb');

// 读取连接 mongodb 的配置
const config = require('../util/server_config');
const { host, port, user, pswd } = config.mongo;

// MongoDB 连接字符串
const uri = `mongodb://${user}:${pswd}@${host}:${port}`;

let mongo = {
    initMongo,
    client: null
};

function initMongo() {
    // 限制 mongo.client 只初始化一次
    if (mongo.client) { return };
    return new Promise((resolve, reject) => {
        console.log('正在连接 mongodb 数据库 ...', host, port);
        // 连接mongodb
        let client = new MongoClient(uri);
        mongo.client = client;
        // 尝试连接数据库
        client.connect().then(() => {
            // 返回连接成功的状态
            console.log('MongoDB 连接成功 ! ! ! !');
            resolve("MongoDB 连接成功 ! ! ! !");
        }).catch(err => {
            console.error('MongoDB 连接失败:', err);
            reject("MongoDB 连接失败 ! ! ! !");
            process.exit(1);
        });
    });
}

module.exports = mongo;